package com.palm.hubo2o.network;

import com.palm.hubo2o.model.Bet;
import com.palm.hubo2o.model.BetSMS;
import com.palm.hubo2o.model.Issue;
import com.palm.hubo2o.model.IssuePrize;
import com.palm.hubo2o.model.LazyResBody;
import com.palm.hubo2o.model.LoginData;
import com.palm.hubo2o.model.Order;
import com.palm.hubo2o.model.PalmSMS;
import com.palm.hubo2o.model.Password;
import com.palm.hubo2o.model.PastIssueParams;
import com.palm.hubo2o.model.QueryOrdersParams;
import com.palm.hubo2o.model.Registration;
import com.palm.hubo2o.model.ScrollerAction;
import com.palm.hubo2o.model.User;
import com.palm.hubo2o.model.UserCash;

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;

/**
 * 后台接口定义
 * Created by wongqi on 16/6/7.
 */
public interface ApiService {

    /**
     * 用户注册
     *
     * @param registration 注册信息
     * @return 用户信息
     */
    @POST("user/register")
    Call<Result<User>> register(@Body Request<Registration> registration);

    /**
     * 用户登录
     *
     * @param login 登录信息
     * @return 用户信息
     */
    @POST("user/login")
    Call<Result<User>> login(@Body Request<LoginData> login);

    /**
     * 用户登出
     *
     * @param logout 登出信息(通用信息)
     * @return void
     */
    @POST("user/logout")
    Call<Result<Void>> logout(@Body Request<Void> logout);

    /**
     * 修改用户手机号
     *
     * @param registration 修改信息(无站点号)
     * @return void
     */
    @POST("user/updateMobile")
    Call<Result<Void>> updateMobile(@Body Request<Registration> registration);

    /**
     * 用户修改密码
     *
     * @param password 新旧密码
     * @return void
     */
    @POST("user/updatePwd")
    Call<Result<Void>> updatePassword(@Body Request<Password> password);

    /**
     * 发送验证码
     *
     * @param sms 验证码类型
     * @return void
     */
    @POST("user/sendSMS")
    Call<Result<Void>> sendSMS(@Body Request<PalmSMS> sms);

    /**
     * 找回密码
     *
     * @param registration 注册信息(无无站点号)
     * @return Void
     */
    @POST("user/findPassword")
    Call<Result<Void>> findPassword(@Body Request<Registration> registration);

    /**
     * 查询当前期次
     *
     * @param gameId 彩种
     * @return 当前期信息
     */
    @POST("lottery/queryCurrentIssue")
    Call<Result<Issue>> queryCurrentIssue(@Body Request<Issue> gameId);


    /**
     * 查询历史期次
     *
     * @param pastIssueData 历史期查询信息
     * @return 历史期次列表
     */
    @POST("lottery/queryPrizes")
    Call<Result<LazyResBody<Issue>>> queryPastIssue(@Body Request<PastIssueParams> pastIssueData);

    /**
     * 开奖详情
     *
     * @param gameId_issueNo 彩种和期次
     * @return 开奖详情
     */
    @POST("lottery/queryPrizeDetail")
    Call<Result<IssuePrize>> queryPrizeDetail(@Body Request<Issue> gameId_issueNo);

    /**
     * 首页轮播图
     *
     * @param scroll 无参
     * @return 轮播图
     */
    @POST("news/scroll")
    Call<Result<LazyResBody<ScrollerAction>>> scrollingNews(@Body Request<Void> scroll);

    /**
     * 查询用户余额
     *
     * @param cash session信息
     * @return 余额
     */
    @POST("account/queryCash")
    Call<Result<UserCash>> queryCash(@Body Request<Void> cash);

    /**
     * 查询订单列表
     *
     * @param query 订单类型
     * @return 订单列表
     */
    @POST("trade/queryOrders")
    Call<Result<LazyResBody<Order>>> queryOrders(@Body Request<QueryOrdersParams> query);

    @POST("trade/lotteryBet")
    Call<Result<BetSMS>> lotteryBet(@Body Request<Bet> bet);
}
